const axios = require('axios');

const baseURL = 'http://localhost:7002/api/v1';

// 测试用的token
const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJkZW1vIiwiZW1haWwiOiJkZW1vQGV4YW1wbGUuY29tIiwiaWF0IjoxNzUzMjM0MTc1LCJleHAiOjE3NTM4Mzg5NzV9.eH9yAWLfyrJVCUB-DqhI1Z5aaxtiED72oRZTESf-7Qs';

const api = axios.create({
  baseURL,
  headers: {
    'Authorization': `Bearer ${token}`,
    'Content-Type': 'application/json'
  }
});

async function testSpecificRecommendations() {
  console.log('🧪 开始测试场合推荐和颜色推荐...\n');

  try {
    // 1. 测试场合推荐 - 休闲场合（最宽松）
    console.log('1️⃣ 测试场合推荐（休闲场合）...');
    try {
      const casualRes = await api.get('/recommendation/occasion-based', {
        params: { occasion: 'casual' }
      });
      console.log(`✅ 休闲场合推荐成功，获得 ${casualRes.data.data.recommendations?.length || 0} 个推荐`);
      if (casualRes.data.data.recommendations?.length > 0) {
        const firstRec = casualRes.data.data.recommendations[0];
        console.log(`   第一个推荐: ${firstRec.name || '无名称'}`);
        console.log(`   包含 ${firstRec.items?.length || 0} 件衣服`);
        console.log(`   单品: ${firstRec.items?.map(item => `${item.name}(${item.color || '无色'})`).join(', ') || '无'}`);
      } else {
        console.log('   ⚠️ 没有生成推荐，可能是筛选条件过严');
      }
    } catch (error) {
      console.error('❌ 休闲场合推荐失败:', error.response?.data?.message || error.message);
    }
    console.log('');

    // 2. 测试颜色推荐 - 黑色单色（最简单）
    console.log('2️⃣ 测试颜色推荐（黑色单色）...');
    try {
      const blackRes = await api.get('/recommendation/color-based', {
        params: { baseColor: '黑色', colorScheme: 'monochromatic' }
      });
      console.log(`✅ 黑色单色推荐成功，获得 ${blackRes.data.data.recommendations?.length || 0} 个推荐`);
      if (blackRes.data.data.recommendations?.length > 0) {
        const firstRec = blackRes.data.data.recommendations[0];
        console.log(`   第一个推荐: ${firstRec.name || '无名称'}`);
        console.log(`   包含 ${firstRec.items?.length || 0} 件衣服`);
        console.log(`   单品: ${firstRec.items?.map(item => `${item.name}(${item.color || '无色'})`).join(', ') || '无'}`);
      } else {
        console.log('   ⚠️ 没有生成推荐，可能是颜色筛选过严');
      }
    } catch (error) {
      console.error('❌ 黑色单色推荐失败:', error.response?.data?.message || error.message);
    }
    console.log('');

    // 3. 测试颜色推荐 - 任意颜色（最宽松）
    console.log('3️⃣ 测试颜色推荐（白色单色）...');
    try {
      const whiteRes = await api.get('/recommendation/color-based', {
        params: { baseColor: '白色', colorScheme: 'monochromatic' }
      });
      console.log(`✅ 白色单色推荐成功，获得 ${whiteRes.data.data.recommendations?.length || 0} 个推荐`);
      if (whiteRes.data.data.recommendations?.length > 0) {
        const firstRec = whiteRes.data.data.recommendations[0];
        console.log(`   第一个推荐: ${firstRec.name || '无名称'}`);
        console.log(`   包含 ${firstRec.items?.length || 0} 件衣服`);
        console.log(`   单品: ${firstRec.items?.map(item => `${item.name}(${item.color || '无色'})`).join(', ') || '无'}`);
      } else {
        console.log('   ⚠️ 没有生成推荐');
      }
    } catch (error) {
      console.error('❌ 白色单色推荐失败:', error.response?.data?.message || error.message);
    }
    console.log('');

    // 4. 检查用户衣柜数据
    console.log('4️⃣ 检查用户衣柜数据...');
    try {
      const wardrobeRes = await api.get('/wardrobe');
      console.log(`📊 用户衣柜统计:`);
      console.log(`   总计: ${wardrobeRes.data.data.length} 件衣服`);
      
      // 按分类统计
      const categoryStats = {};
      wardrobeRes.data.data.forEach(item => {
        const category = item.category?.name || '未分类';
        categoryStats[category] = (categoryStats[category] || 0) + 1;
      });
      
      console.log(`   分类统计:`, categoryStats);
      
      // 按颜色统计
      const colorStats = {};
      wardrobeRes.data.data.forEach(item => {
        const color = item.color || '无颜色';
        colorStats[color] = (colorStats[color] || 0) + 1;
      });
      
      console.log(`   颜色统计:`, colorStats);
      
    } catch (error) {
      console.error('❌ 获取衣柜数据失败:', error.response?.data?.message || error.message);
    }

    console.log('\n🎉 测试完成！');

  } catch (error) {
    console.error('❌ 测试过程中发生错误:', error.message);
  }
}

// 运行测试
testSpecificRecommendations();
